package hash

import (
	"crypto/md5"
	"crypto/sha1"
	"crypto/sha256"
	"fmt"
	"strings"
)

func MD5(b []byte) string {
	h := md5.New()
	h.Write(b)
	return fmt.Sprintf("%x", h.Sum(nil))
}

func MD5_16(b []byte) string {
	r := MD5(b)
	return r[8:24]
}

func SHA1(b []byte) string {
	h := sha1.New()
	h.Write(b)
	return fmt.Sprintf("%x", h.Sum(nil))
}

func SHA256(b []byte) string {
	h := sha256.New()
	h.Write(b)
	return fmt.Sprintf("%x", h.Sum(nil))
}

func MD5String(s string) string {
	return MD5([]byte(s))
}
func MD5ToUpper(s string) string {
	return strings.ToUpper(MD5([]byte(s)))
}
